﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using T.FAS.Runtime.Metadata.Entity;
using T.FAS.Runtime.Metadata.SPI;

namespace T.FAS.Runtime.Metadata.Dao
{
    public class MetaTypeCacheService
    {
        private static readonly object s_lock = new object();
        public static bool IsCheckMetaTypeID = true;
        private static List<MetaDataTypeInfo> s_metaDataTypeInfos;
        public static List<MetaDataTypeInfo> MetaDataTypeInfos
        {
            get
            {
                if (s_metaDataTypeInfos == null)
                {
                    s_metaDataTypeInfos = new MetaDataTypeInfoDao().GetMetaDataTypeInfos();
                }
                return s_metaDataTypeInfos;
            }
        }
        private MetaTypeCacheService() { }

        public static MetaDataTypeInfo Get(string metaTypeID)
        {
            if (string.IsNullOrEmpty(metaTypeID))
            {
                throw new ArgumentNullException(metaTypeID);
            }
            try
            {
                return MetaDataTypeInfos.FirstOrDefault(t => t.ID == metaTypeID);
            }
            catch (Exception e)
            {
                throw new Exception($"获取元数据Manager缓存失败, msg:{e.Message}\r\n, e:{e}");
            }
        }
    }
}
